SRE 観点での Google の本番環境
Site Reliability Engineering (SRE) 観点での Google の本番環境
Google のデータセンターの特徴と用語の説明
サーバーのハードウェアとソフトウェアの混同を避けるため、以下の用語を使用
「マシン」 はハードウェアの一部 (もしくは仮想マシン)
「サーバー」 はサービスを構成するソフトウェアの一部
データセンター周り
構成
複数データセンターでデータセンターキャンパスを形成
データセンター内には、複数ラックからなるクラスターが複数存在
データセンター内のマシン同士の通信のために何万ものポートを持つ高速な仮想スイッチを開発
Google が開発した何百ものスイッチを Jupiter という Clos ネットワークファブリックで接続
データセンター同士は、グローバルなバックボーンネットワーク B4 で互いに接続
ハードウェアの組織化のためにクラスタ OS の Borg が使われる
Borg はジョブ実行を担当 (ジョブは無期限に動くサーバーだったり、MapReduce のようなバッチプロセスだったり)
Borg は、ジョブ開始時にタスクに適したマシンを見つけてそのマシンにサーバープログラムを起動させる
流動的にタスクが割り当てられるため、通信のために Borg Naming Service (BNS) を利用
ストレージについて
タスクはローカルストレージを一時的な記憶域として使える
永続的なストレージとしてはクラスタストレージ
オープンソースのクラスターファイルシステムである Lustre や Hadoop Distributed File System (HDFS) のようなもの
ストレージのディスクの上の層としては Colossus
Colossus の上に構築されたデータベース的なサービスもいくつかある
Bigtable : ペタバイト級のデータベースを扱える NoSQL データベースシステム
Spanner : SQL ライクなインタフェースを提供し、全世界で一貫性を必要とするユーザを支援
その他、Blobstore などいくつかのデータベースシステムが利用可能
ネットワークについて
OpenFlow ベースの Software-Defined Network を使用
計算負荷の高いルーティングの決定をルーターから切り離し、シンプルなスイッチングハードウェアを使用
Bandwidth Enforcer (BwE) : 帯域幅を管理し、平均使用帯域幅を最大に
Global Software Load Balancer (GSLB) : 3 つのレベルでロードバランシング
DNS リクエストでの地理的なロードバランシング
ユーザーサービスごとのロードバランシング
RPC でのロードバランシング
その他
Chubby : ロックサービス
Borgmon : モニタリング
ソフトウェアインフラストラクチャ
ハードウェアを最も効率よく利用できるように設計
すべてのサーバーに HTTP サーバーがあり、タスクの診断と統計情報を提供
ダッシュボードやモニタリング、デバッグを容易にする
Stubby (オープンソース版は gRPC) と呼ばれる RPC で通信
データは RPC 上を protocol buffers (protobuf とも) でやりとりされる
開発環境
一部のオープンソースリポジトリがあるプロダクトを除き、単一のリポジトリで作業
自身のプロジェクト外のコンポーネントで問題を発見したら、変更申請を出せる
データセンターのビルドサーバーでビルド
参考文献
Site Reliability Engineering: How Google Runs Production Systems